﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using BOL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;

namespace BOL.Compras
{
    public class GetOrdenCompraExcel
    {

        int _count;

        public int Count(int idObra,
            DateTime fechaInicio,
            DateTime fechaFin,
            int startRowIndex,
            int maximumRows,
            string sortExpression)
        {
            return _count;
        }


        private IQueryable<OrdenCompraExcel> ApplySelect_ListInfo()
        {

            var q = from a in DbUtil.Db.OrdenCompras
                     where a.bitActivo==true
                    select new OrdenCompraExcel
                    {
                        autorizado = a.Empleado1.descripcion,
                        comparativo = a.idComparativo == null ? "" : a.Comparativo.descripcion,
                        estado = a.GrupoDatoitem.descripcion,
                        estructuraCosto = a.EstructuraCosto.descripcion,
                        fecha = a.fechaEmision.Value.ToShortDateString(),
                        formaPago = a.FormaPago.descripcion,
                        igv = a.IGVTotal.Value,
                        moneda = a.Moneda1.descripcion,
                        numDocumento = string.Format("{0}-{1}", a.TipoOrden.simbol, a.numDocumento),
                        observacion = a.observaciones,
                        observacionInter = a.observacionInter,
                        proveedor = a.proveedor,
                        ruc = a.docProveedor,
                        subtotal = a.subTotal.Value,
                        tipoCambio = a.tipoCambio.Value,
                        total = a.total.Value,
                        idObra=a.idObra.Value, 
                        idTipo=a.idTipoOrden.Value


                    };
            return q;






        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<OrdenCompraExcel> Execute(int idObra,int idTipoOrden)
        {
               
            
             var q = ApplySelect_ListInfo();
             q = (idTipoOrden==1?q.Where(a => a.idObra == idObra & a.idTipo==idTipoOrden):
                                 q.Where(a => a.idObra == idObra& a.idTipo>=idTipoOrden));
            _count = q.Count();
            return q;
            
         


        }
    }
}
